import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QTextEdit, QMessageBox ,QMenu
from PyQt5.QtCore import Qt

def execute_program(input_text):
    # 这里定义你要执行的程序函数
    # 我们这里只是简单地返回输入框的内容
    try:
        result = f"处理后的结果: {input_text}"
        return result
    except Exception as e:
        # 如果有异常，抛出并返回异常信息
        raise e

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 创建布局
        layout = QVBoxLayout()

        # 创建输入框和按钮
        self.lineEdit = QLineEdit(self)
        self.lineEdit.setFixedHeight(40)
        self.lineEdit.setPlaceholderText("请输入内容")
        # 添加 padding
        self.lineEdit.setStyleSheet("QLineEdit { padding-left: 10px; }")

        self.button = QPushButton('查询', self)
        self.button.clicked.connect(self.onButtonClicked)
        #按钮改为蓝色
        self.button.setStyleSheet("QPushButton { background-color: #007bff; color: white; }")
        #按钮文字颜色为白色
        self.button.setFixedHeight(40)
        #按钮悬浮颜色
        self.button.setStyleSheet("QPushButton:hover { background-color: #0056b3;color: white; }")
        #按钮 鼠标悬浮 改为手抓形状
        self.button.setCursor(Qt.PointingHandCursor) 

  

        # 创建文本块，用于显示结果
        self.textEdit = QTextEdit(self)
        self.textEdit.setReadOnly(True)
        # 文本块内容超出显示区域时，滚动条自动显示
        self.textEdit.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)


        # 将控件添加到布局中
        layout.addWidget(self.lineEdit)
        layout.addWidget(self.button)
        layout.addWidget(self.textEdit)

        

        # 设置布局
        self.setLayout(layout)
        self.setWindowTitle('二分法 数据查询系统')
        self.setGeometry(300, 300, 400, 400)

    def onButtonClicked(self):
        # 从输入框获取文本
        input_text = self.lineEdit.text()
        # 两边去空格
        input_text = input_text.strip()
        if not input_text:
            QMessageBox.warning(self, '警告', '请输入内容')
            return
        # 执行函数并获取结果
        try:
            result = execute_program(input_text)
            # 将结果显示在文本块中
            self.textEdit.setText(result)
        except Exception as e:
            # 如果有异常，弹出警告框
            QMessageBox.warning(self, '警告', f'发生错误: {e}')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    ex.show()
    sys.exit(app.exec_())